/*
 * @Author: lijunqing
 * @Date: 2024-04-10 14:07:07
 * @LastEditors: lijunqing
 * @LastEditTime: 2024-04-16 20:52:45
 * @Description:
 */

const EventEmitter = require("events");

const emitter = new EventEmitter();

const emitHandle = (val) => {
  console.log("handleEmit", val);
};
// 1、监听事件
emitter.on("handle", emitHandle);
emitter.on("handle", emitHandle);

emitter.on("handle2", emitHandle);
emitter.on("handle2", emitHandle);
emitter.on("handle2", emitHandle);

// 2、发射事件

// 3、移除监听事件

setTimeout(() => {
  emitter.emit("handle", { name: "li" });

  emitter.off("handle", emitHandle);

  setTimeout(() => {
    emitter.emit("handle", { name: "long" });
  }, 1000);
}, 2000);

// 3、获取所有监听事件的名称

console.log(emitter.eventNames());

// 4、获取最大监听数量  M默认10

console.log(emitter.getMaxListeners());

// 5、获取某个监听事件的监听个数

console.log(emitter.listenerCount("handle2"));

// 只监听一次发射事件

emitter.once("cook", () => {
  console.log("只监听一次");
});

emitter.prependListener("cook", () => {
  console.log("放在队列前面");
});

emitter.emit("cook");

emitter.removeAllListeners("cook");
